home *** CD-ROM | disk | FTP | other *** search
/ Scene Storm / Scene Storm - Volume 1.iso / coding / c / vbcc / machines / amiga68k / libsrc / stdio / _putbuf.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-08-28  |  705 b   |  25 lines

  1. #include <stdio.h>
  2.  
  3. /*  schreibt Daten aus Buffer   */
  4. /*  fuegt c als neues Zeichen ein, falls c!=EOF */
  5. int _putbuf(int c,FILE *f)
  6. {
  7.     _chkabort();
  8.     if(!f) return(EOF);
  9.     if((f->flags&(_WRITEABLE|_READ|_EOF|_ERR))!=_WRITEABLE) return(EOF);
  10.     if(!f->bufsize){if(f->flags&_UNBUF) f->bufsize=1; else f->bufsize=BUFSIZ;}
  11.     if(!f->base){
  12.         if(!(f->base=(char *)malloc(f->bufsize+1)+1))
  13.             return(EOF);
  14.     }else{
  15.         if(f->flags&_WRITE)
  16.          if(Write(f->filehandle,f->base,f->bufsize)!=f->bufsize) return(EOF);
  17.     }
  18.     f->flags|=_WRITE;
  19.     f->pointer=f->base;
  20.     f->count=f->bufsize;
  21.     *f->pointer++=c;
  22.     f->count--;
  23.     return(0);  /*  hier noch ueberlegen    */
  24. }
  25.